1
Dari Dataset Mainan ke Kekacauan Dunia Nyata
EvoClass-AI002Lecture 5
00:00

1. Menjembatani Jurang: Dasar-Dasar Pemuatan Data

Model Deep Learning berkembang pesat dengan data yang bersih dan konsisten, tetapi dataset dunia nyata pada dasarnya berantakan. Kita harus beralih dari benchmark siap pakai (seperti MNIST) ke pengelolaan sumber data tak terstruktur di mana pemuatan data sendiri merupakan tugas kompleks yang perlu diatur secara cermat. Fondasi dari proses ini terletak pada alat khusus PyTorch untuk manajemen data.

Tantangan utama adalah mengubah data mentah dan tersebar (gambar, teks, file audio) yang disimpan di disk menjadi format PyTorch yang sangat terorganisir dan standar, format Tensor yang diharapkan oleh GPU. Ini membutuhkan logika khusus untuk indeksing, pembebanan, pra-pemrosesan, dan akhirnya pembagian dalam batch.

Tantangan Utama dalam Data Dunia Nyata

  • Kekacauan Data: Data tersebar di berbagai direktori, sering kali hanya diindeks melalui file CSV.
  • Pra-pemrosesan Diperlukan: Gambar mungkin memerlukan penyesuaian ukuran, normalisasi, atau augmentasi sebelum dikonversi menjadi tensor.
  • Tujuan Efisiensi: Data harus dikirim ke GPU dalam batch yang dioptimalkan dan tidak menahan (non-blocking) agar kecepatan pelatihan maksimal.
Solusi PyTorch: Memisahkan Tugas
PyTorch menerapkan pemisahan tanggung jawab: objek Dataset menangani "apa" (bagaimana mengakses satu sampel dan label), sedangkan objek DataLoader menangani "bagaimana" (pembagian batch yang efisien, pengacakan, dan pengiriman multithreaded).
data_pipeline.py
TERMINALbash — data-env
> Ready. Click "Run" to execute.
>
TENSOR INSPECTOR Live

Run code to inspect active tensors
Question 1
What is the primary role of a PyTorch Dataset object?
To organize samples into mini-batches and shuffle them.
To define the logic for retrieving a single, preprocessed sample.
To perform the matrix multiplication inside the model.
Question 2
Which DataLoader parameter enables parallel loading of data using multiple CPU cores?
device_transfer
batch_size
num_workers
async_load
Question 3
If your raw images are all different sizes, which component is primarily responsible for resizing them to a uniform dimension (e.g., $224 \times 224$)?
The DataLoader's collate_fn.
The GPU's dedicated image processor.
The Transformation function applied within the Dataset's __getitem__ method.
Challenge: The Custom Image Loader Blueprint
Define the structure needed for real-world image classification.
You are building a CustomDataset for 10,000 images indexed by a single CSV file containing paths and labels.
Step 1
Which mandatory method must return the total number of samples?
Solution:
The __len__ method.
Concept: Defines the epoch size.
Step 2
What is the correct order of operations inside __getitem__(self, index)?
Solution:
1. Look up file path using index.
2. Load the raw data (e.g., Image).
3. Apply the necessary transforms.
4. Return the processed Tensor and Label.